package com.library.borrow.dao;

import com.library.borrow.model.BorrowRecord;
import com.library.util.PageModel;
import java.util.List;
import java.util.Map;

public interface BorrowRecordDao {
    // 添加借阅记录
    int addBorrowRecord(BorrowRecord borrowRecord);
    
    // 更新借阅记录
    int updateBorrowRecord(BorrowRecord borrowRecord);
    
    // 根据ID删除借阅记录
    int deleteBorrowRecordById(Integer id);
    
    // 根据ID查询借阅记录
    BorrowRecord getBorrowRecordById(Integer id);
    
    // 获取所有借阅记录
    List<Map<String, Object>> getAllBorrowRecords();
    
    // 根据图书ID查询借阅记录
    List<Map<String, Object>> getBorrowRecordsByBookId(Integer bookId);
    
    // 根据借阅人查询借阅记录
    List<Map<String, Object>> getBorrowRecordsByReaderName(String readerName);
    
    // 根据借阅状态查询借阅记录
    List<Map<String, Object>> getBorrowRecordsByStatus(String status);
    
    // 更新借阅记录状态
    int updateBorrowRecordStatus(Integer id, String status);
    
    // 归还图书（更新实际归还日期和状态）
    int returnBook(Integer id, java.util.Date actualReturnDate);
    
    /**
     * 统一的分页查询方法
     * @param pageModel 分页模型，包含页码、每页记录数、查询条件等
     * @return 返回查询结果列表
     */
    List<Map<String, Object>> getBorrowRecordsByPage(PageModel pageModel);
    
    /**
     * 获取符合条件的总记录数
     * @param pageModel 分页模型，包含查询条件
     * @return 总记录数
     */
    int getBorrowRecordsCount(PageModel pageModel);
} 